import { createRouter, createWebHistory } from 'vue-router'
// 导入token
import { useUserStore } from '@/stores'
// createRouter用于创建路由实例
const router = createRouter({
  //路由模式
  // 1、history模式使用（createWebHistory）   地址栏不带#
  // 2、hash模式使用（createHashHistory）     地址栏带#
  // 3、参数是基础路径，默认/
  history: createWebHistory(import.meta.env.BASE_URL), //路由模式
  routes: [
    //路由规则配置
    {
      path: '/login',
      // redirect: '/login',
      component: () => import('@/views/login/LoginPage.vue')
    },
    {
      path: '/layout',
      component: () => import('@/views/layout/LayoutContainer.vue'),
      redirect: '/article/manage',
      children: [
        {
          path: '/article/manage',
          component: () => import('@/views/article/ArticleManage.vue')
        },
        {
          path: '/article/channerl',
          component: () => import('@/views/article/ArticleChannerl.vue')
        },
        {
          path: '/user/avatar',
          component: () => import('@/views/user/UserAvatar.vue')
        },
        {
          path: '/user/password',
          component: () => import('@/views/user/UserPassword.vue')
        },
        {
          path: '/user/profile',
          component: () => import('@/views/user/UserProfile.vue')
        }
      ]
    }
  ]
})

// 登录访问拦截(官网叫导航守卫) => 默认是直接放行的e
// 返回值是undefined/true  放行
// 每个守卫方法接收两个参数：
// -- to: 即将要进入的目标
// -- from: 当前导航正要离开的路由

router.beforeEach((to) => {
  const userStore = useUserStore()
  // 如果没有token并且要去的地址不是登录页,将进入登录页面
  if (!userStore.token && to.path !== '/login') return '/login'

  // return true 不写也可以,因为不写返回值是undefined
  return true
})

export default router
